<?php
/**
 * 与网银 的沟通 数据		
 * @param $interfaceArr 接口信息数组 
 */
class Helper_interface_pay_paypalIPN extends Helper_interface_pay_base
{
	public function __construct(){
		// config 	
		$this->__setconfig(array(
		    'url'=>'http://www.paypal.com/cgi-bin/webscr',
		    'sandbox_url'=>'http://www.sandbox.paypal.com/cgi-bin/webscr',
    		"cmd"=>"_notify-validate",
    		"host"=>"www.paypal.com",
    		//"host"=>"www.sandbox.paypal.com",
    		"port"=>80,
    		"path"=>"/cgi-bin/webscr"
//     		'host'=>'www.coomao.com',
//     		'port'=> 80,
//     		'path'=> '/test/saverequest.php',
    	));
	}
	
	public function send($post='',$is_sanbox=null){
	   if($is_sanbox){
          $this->config["url"]=$this->config["sandbox_url"];
       }
		$res="cmd=".$this->config["cmd"];
		$res.=$this->formatpoststr($post,1);
		$charset=(!empty($post["charset"]))?$post["charset"]:"utf-8"; //编码
		$fetch=$this->socket_post($this->config["url"],$res,"",$charset,30);
		Helper_tlog::tofile('paypal_ipn.log',$fetch['body']);
		$returnRows=explode("\r\n",$fetch['body']);//分割行 成 每行一个
		foreach($returnRows as $returnItem){
			if (strcmp ($returnItem, "VERIFIED") == 0) {
				//检查付款状态 
				//检查txn_id 是否已经处理过 
				//检查receiver_email是否是您的PayPal账户中的EMAIL地址 
				//检查付款金额和货币单位是否正确 
				//处理这次付款，包括写数据库
				return "VERIFIED";
				break; 
			}else if (strcmp ($returnItem, "INVALID") == 0) {
				//未通过认证，有可能是编码错误或非法的POST信息 
				return "INVALID";
				break;
			}
		}
		//没有收到反馈的
		return $fetch['body'];
	}
	/****
	 * 覆盖 基类 的组织 返回值的方法
	 */
	function _socket_return($row){
		$this->socket_return_body[]=$row;
	}
}